package jp.seraph.same.controller;

import java.io.IOException;

import jp.seraph.same.model.MotionModel;

public interface MotionManagerController {
    /**
     * aMotionNameを持つMotionModelを生成して返します。
     * 既に同名のMotionModelが存在する場合、そのMotionModelを上書きします。
     *
     * @param aMotionName
     * @return 生成されたMotionModel
     */
    public MotionModel createMotion(String aMotionName);

    /**
     * aMotionNameを持つMotionModelを返します。
     * 対象となるMotionModelが存在しない場合nullを返します。
     *
     * @param aMotionName
     * @return 対象のMotionModel 対象のMotionModelが無い場合はnull
     */
    public MotionModel getMotion(String aMotionName);
    public MotionModel removeMotion(String aMotionName);
    public MotionModel removeMotion(MotionModel aTarget);

    /**
     * MotionModelへの変更を永続化します。
     *
     * @throws IOException
     */
    public void commit() throws IOException;

    /**
     * 新しくMotionManagerを開きます
     *
     * @throws IOException
     */
    public void open() throws IOException;

    public void renameMotion(String aOldName, String aNewName);
}
